(()=>{
    /*
        类装饰器
            1. 无法传参
            2. 传参写法（）
            3. 类装饰器重载构造函数

        属性装饰器

        方法装饰器
    */

    // const Person_fn = (params:any) => {
    //     console.log("不传x参",params);
    //     params.prototype.name = "2004A"
    //     params.prototype.fn = () => {
    //         console.log("通过装饰器添加的方法");
    //     }
    // }

    // @Person_fn
    // class Person {
    //     name: string;
    //     fn: void;
    //     constructor(){

    //     }
    //     get_name(){
    //         return "哈哈哈哈"
    //     }
        
    // }
    // const my_person  = new Person()
    // console.log(my_person.fn);
    
    // 传参写法(装饰器工厂)
    
    // const person_fn = (url:string) => { 
    //     return (params:any) => {
    //         console.log("url",url);
    //         console.log("params",params);
    //         params.prototype.url = url
    //     }   
    // }

    // @person_fn("http://www.baidu.com")
    // class Person {
    //     url:string
    //     constructor(){

    //     }
    // }

    // const my_person = new Person()
    // console.log(my_person.url);

    // 装饰器重载构造函数
    // const person_fn = (target:any) =>{
    //     console.log(target);
    //     return class extends target {
    //         url:string = "修改后的数据"
    //         get_url(){
    //             this.url = this.url+"----"
    //             console.log(this.url);
    //         }
    //     }
    // }

    // @person_fn
    // class Person {
    //     public url :string|undefined
    //     constructor(){
    //         this.url= "构造函数里的url"
    //     }
    //     get_url(){
    //         console.log(this.url);
    //     }
    // }

    // const my_person = new Person()
    // my_person.get_url()

    //属性装饰器
    // const person_fn = (url:string) => {
    //     console.log("url",url);
    //     return (target:any,attr:any)=>{
    //         console.log("target",target);
    //         console.log("attr",attr);
    //         target[attr] = url
            
    //     }
    // }
    // class person {
    //     @person_fn("htttp://baidu.com")
    //     public url :string|undefined 
    //     constructor(){
    //     }

    //     get_url(){
    //         console.log("get_url",this.url);
            
    //     }
    // }

    // const my_Person = new person()
    // my_Person.get_url()

    // 
    // new Promise((_resolve, _reject)=>{
    //     _reject()
    //     // resolve(1)
    // }).then(res=>{
    //     console.log(res);
        
    // }).catch(_eorry=>{
    //     try {   
    //         //
            
    //     } catch (error) {
    //         console.log(error);
            
    //     }
    // })
    // var 
    // let 
    // const 
    
})()